home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks '96 / 3D No 'doz / Source / Load3DNoDoz.c < prev    next >
Encoding:
Text File  |  1996-06-22  |  678 b   |  51 lines  |  [TEXT/SPM ]

  1. typedef void (*MainPP)(void);
  2.  
  3. void Load3DNoDoz(void)
  4. {
  5.     short        cResFile = CurResFile();
  6.     short        rFile = OpenResFile("\p3D No 'doz");
  7.     Handle        h;
  8.     FileParam    pb;
  9.     MainPP        mainProc;
  10.     THz            cZone;
  11.     
  12.     if (rFile == -1)
  13.     {
  14.     DeleteMe:
  15.         pb.ioNamePtr = "\pDisassembler";
  16.         pb.ioVRefNum = 0;
  17.         pb.ioFVersNum = 0;
  18.         
  19.         PBDeleteSync((ParmBlkPtr) &pb);
  20.         
  21.         UseResFile(cResFile);
  22.         
  23.         return;
  24.     }
  25.     
  26.     cZone = GetZone();
  27.     SetZone(SystemZone());
  28.     
  29.     h = Get1Resource('init', 128);
  30.     
  31.     if (!h)
  32.     {
  33.         SetZone(cZone);
  34.         goto DeleteMe;
  35.     }
  36.     
  37.     HNoPurge(h);
  38.     HLock(h);
  39.     DetachResource(h);
  40.     
  41.     mainProc = (MainPP) *h;
  42.     
  43.     (*mainProc)();
  44.     
  45.     SetZone(cZone);
  46.     
  47.     CloseResFile(rFile);
  48.     
  49.     UseResFile(cResFile);
  50. }
  51.